home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / tnzs.c < prev    next >
C/C++ Source or Header  |  2000-04-23  |  74KB  |  2,030 lines

  1. /***************************************************************************
  2.  
  3. The New Zealand Story driver, used for tnzs & tnzs2.
  4.  
  5. TODO: - Find out how the hardware credit-counter works (MPU)
  6.       - Verify dip switches
  7.       - Fix video offsets (See Dr Toppel in Flip-Screen - also
  8.            affects Chuka Taisen)
  9.       - Video scroll side flicker in Chuka Taisen, Insector X and Dr Toppel
  10.  
  11.     Arkanoid 2:
  12.       - What do writes at $f400 do ?
  13.       - Why does the game zero the $fd00 area ?
  14.     Extrmatn:
  15.       - What do reads from $f600 do ? (discarded)
  16.     Chuka Taisen:
  17.       - What do writes at  $f400 do ? (value 40h)
  18.       - What do reads from $f600 do in service mode ?
  19.     Dr Toppel:
  20.       - What do writes at  $f400 do ? (value 40h)
  21.       - What do reads from $f600 do in service mode ?
  22.  
  23. ****************************************************************************
  24.  
  25. extrmatn and arkanoi2 have a special test mode. The correct procedure to make
  26. it succeed is as follows:
  27. - enter service mode
  28. - on the color test screen, press 2 (player 2 start)
  29. - set dip switch 1 and dip switch 2 so that they read 00000001
  30. - reset the emulation, and skip the previous step.
  31. - press 3 (coin 1). Text at the bottom will change to "CHECKING NOW".
  32. - use all the inputs, including tilt, until all inputs are OK
  33. - press 3 (coin 1) - to confirm that coin lockout 1 works
  34. - press 3 (coin 1) - to confirm that coin lockout 2 works
  35. - set dip switch 1 to 00000000
  36. - set dip switch 1 to 10101010
  37. - set dip switch 1 to 11111111
  38. - set dip switch 2 to 00000000
  39. - set dip switch 2 to 10101010
  40. - set dip switch 2 to 11111111
  41. - speaker should now output a tone
  42. - press 3 (coin 1) , to confirm that OPN works
  43. - press 3 (coin 1) , to confirm that SSGCH1 works
  44. - press 3 (coin 1) , to confirm that SSGCH2 works
  45. - press 3 (coin 1) , to confirm that SSGCH3 works
  46. - finished ("CHECK ALL OK!")
  47.  
  48. ****************************************************************************
  49.  
  50. The New Zealand Story memory map (preliminary)
  51.  
  52. CPU #1
  53. 0000-7fff ROM
  54. 8000-bfff banked - banks 0-1 RAM; banks 2-7 ROM
  55. c000-dfff object RAM, including:
  56.   c000-c1ff sprites (code, low byte)
  57.   c200-c3ff sprites (x-coord, low byte)
  58.   c400-c5ff tiles (code, low byte)
  59.  
  60.   d000-d1ff sprites (code, high byte)
  61.   d200-d3ff sprites (x-coord and colour, high byte)
  62.   d400-d5ff tiles (code, high byte)
  63.   d600-d7ff tiles (colour)
  64. e000-efff RAM shared with CPU #2
  65. f000-ffff VDC RAM, including:
  66.   f000-f1ff sprites (y-coord)
  67.   f200-f2ff scrolling info
  68.   f300-f301 vdc controller
  69.   f302-f303 scroll x-coords (high bits)
  70.   f600      bankswitch
  71.   f800-fbff palette
  72.  
  73. CPU #2
  74. 0000-7fff ROM
  75. 8000-9fff banked ROM
  76. a000      bankswitch
  77. b000-b001 YM2203 interface (with DIPs on YM2203 ports)
  78. c000-c001 I8742 MCU
  79. e000-efff RAM shared with CPU #1
  80. f000-f003 inputs (used only by Arkanoid 2)
  81.  
  82. ****************************************************************************/
  83. /***************************************************************************
  84.  
  85.                 Arkanoid 2 - Revenge of Doh!
  86.                     (C) 1987 Taito
  87.  
  88.                         driver by
  89.  
  90.                 Luca Elia (eliavit@unina.it)
  91.                 Mirko Buffoni
  92.  
  93. - The game doesn't write to f800-fbff (static palette)
  94.  
  95.  
  96.  
  97.             Interesting routines (main cpu)
  98.             -------------------------------
  99.  
  100. 1ed    prints the test screen (first string at 206)
  101.  
  102. 47a    prints dipsw1&2 e 1p&2p paddleL values:
  103.     e821        IN DIPSW1        e823-4    1P PaddleL (lo-hi)
  104.     e822        IN DIPSW2        e825-6    2P PaddleL (lo-hi)
  105.  
  106. 584    prints OK or NG on each entry:
  107.     if (*addr)!=0 { if (*addr)!=2 OK else NG }
  108.     e880    1P PADDLEL        e88a    IN SERVICE
  109.     e881    1P PADDLER        e88b    IN TILT
  110.     e882    1P BUTTON        e88c    OUT LOCKOUT1
  111.     e883    1P START        e88d    OUT LOCKOUT2
  112.     e884    2P PADDLEL        e88e    IN DIP-SW1
  113.     e885    2P PADDLER        e88f    IN DIP-SW2
  114.     e886    2P BUTTON        e890    SND OPN
  115.     e887    2P START        e891    SND SSGCH1
  116.     e888    IN COIN1        e892    SND SSGCH2
  117.     e889    IN COIN2        e893    SND SSGCH3
  118.  
  119. 672    prints a char
  120. 715    prints a string (0 terminated)
  121.  
  122.         Shared Memory (values written mainly by the sound cpu)
  123.         ------------------------------------------------------
  124.  
  125. e001=dip-sw A     e399=coin counter value        e72c-d=1P paddle (lo-hi)
  126. e002=dip-sw B     e3a0-2=1P score/10 (BCD)    e72e-f=2P paddle (lo-hi)
  127. e008=level=2*(shown_level-1)+x <- remember it's a binary tree (42 last)
  128. e7f0=country code(from 9fde in sound rom)
  129. e807=counter, reset by sound cpu, increased by main cpu each vblank
  130. e80b=test progress=0(start) 1(first 8) 2(all ok) 3(error)
  131. ec09-a~=ed05-6=xy pos of cursor in hi-scores
  132. ec81-eca8=hi-scores(8bytes*5entries)
  133.  
  134. addr    bit    name        active    addr    bit    name        active
  135. e72d    6    coin[1]        low        e729    1    2p select    low
  136.         5    service        high            0    1p select    low
  137.         4    coin[2]        low
  138.  
  139. addr    bit    name        active    addr    bit    name        active
  140. e730    7    tilt        low        e7e7    4    1p fire        low
  141.                                         0    2p fire        low
  142.  
  143.             Interesting routines (sound cpu)
  144.             --------------------------------
  145.  
  146. 4ae    check starts    B73,B7a,B81,B99    coin related
  147. 8c1    check coins        62e lockout check        664    dsw check
  148.  
  149.             Interesting locations (sound cpu)
  150.             ---------------------------------
  151.  
  152. d006=each bit is on if a corresponding location (e880-e887) has changed
  153. d00b=(c001)>>4=tilt if 0E (security sequence must be reset?)
  154. addr    bit    name        active
  155. d00c    7    tilt
  156.         6    ?service?
  157.         5    coin2        low
  158.         4    coin1        low
  159.  
  160. d00d=each bit is on if the corresponding location (e880-e887) is 1 (OK)
  161. d00e=each of the 4 MSBs is on if ..
  162. d00f=FF if tilt, 00 otherwise
  163. d011=if 00 checks counter, if FF doesn't
  164. d23f=input port 1 value
  165.  
  166. ***************************************************************************/
  167. /***************************************************************************
  168.  
  169. Kageki
  170. (c) 1988 Taito Corporation
  171.  
  172. Driver by Takahiro Nogi (nogi@kt.rim.or.jp) 1999/11/06
  173.  
  174. ***************************************************************************/
  175.  
  176. #include "driver.h"
  177. #include "vidhrdw/generic.h"
  178.  
  179.  
  180.  
  181. /* prototypes for functions in ../machine/tnzs.c */
  182. unsigned char *tnzs_objram, *tnzs_workram;
  183. unsigned char *tnzs_vdcram, *tnzs_scrollram;
  184. void init_extrmatn(void);
  185. void init_arkanoi2(void);
  186. void init_drtoppel(void);
  187. void init_chukatai(void);
  188. void init_tnzs(void);
  189. void init_insectx(void);
  190. void init_kageki(void);
  191. READ_HANDLER( arkanoi2_sh_f000_r );
  192. void tnzs_init_machine(void);
  193. int tnzs_interrupt (void);
  194. READ_HANDLER( tnzs_mcu_r );
  195. READ_HANDLER( tnzs_workram_r );
  196. READ_HANDLER( tnzs_workram_sub_r );
  197. WRITE_HANDLER( tnzs_workram_w );
  198. WRITE_HANDLER( tnzs_workram_sub_w );
  199. WRITE_HANDLER( tnzs_mcu_w );
  200. WRITE_HANDLER( tnzs_bankswitch_w );
  201. WRITE_HANDLER( tnzs_bankswitch1_w );
  202.  
  203.  
  204. /* prototypes for functions in ../vidhrdw/tnzs.c */
  205. int tnzs_vh_start(void);
  206. void tnzs_vh_stop(void);
  207. void arkanoi2_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  208. void arkanoi2_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  209. void tnzs_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  210.  
  211.  
  212.  
  213. /* max samples */
  214. #define    MAX_SAMPLES    0x2f
  215.  
  216. int kageki_init_samples(const struct MachineSound *msound)
  217. {
  218.     struct GameSamples *samples;
  219.     unsigned char *scan, *src, *dest;
  220.     int start, size;
  221.     int i, n;
  222.  
  223.     size = sizeof(struct GameSamples) + MAX_SAMPLES * sizeof(struct GameSamples *);
  224.  
  225.     if ((Machine->samples = malloc(size)) == NULL) return 1;
  226.  
  227.     samples = Machine->samples;
  228.     samples->total = MAX_SAMPLES;
  229.  
  230.     for (i = 0; i < samples->total; i++)
  231.     {
  232.         src = memory_region(REGION_SOUND1) + 0x0090;
  233.         start = (src[(i * 2) + 1] * 256) + src[(i * 2)];
  234.         scan = &src[start];
  235.         size = 0;
  236.  
  237.         // check sample length
  238.         while (1)
  239.         {
  240.             if (*scan++ == 0x00)
  241.             {
  242.                 break;
  243.             } else {
  244.                 size++;
  245.             }
  246.         }
  247.         if ((samples->sample[i] = malloc(sizeof(struct GameSample) + size * sizeof(unsigned char))) == NULL) return 1;
  248.  
  249.         if (start < 0x100) start = size = 0;
  250.  
  251.         samples->sample[i]->smpfreq = 7000;    /* 7 KHz??? */
  252.         samples->sample[i]->resolution = 8;    /* 8 bit */
  253.         samples->sample[i]->length = size;
  254.  
  255.         // signed 8-bit sample to unsigned 8-bit sample convert
  256.         dest = (unsigned char *)samples->sample[i]->data;
  257.         scan = &src[start];
  258.         for (n = 0; n < size; n++)
  259.         {
  260.             *dest++ = ((*scan++) ^ 0x80);
  261.         }
  262.     //    logerror("samples num:%02X ofs:%04X lng:%04X\n", i, start, size);
  263.     }
  264.  
  265.     return 0;
  266. }
  267.  
  268.  
  269. static int kageki_csport_sel = 0;
  270. static READ_HANDLER( kageki_csport_r )
  271. {
  272.     int    dsw, dsw1, dsw2;
  273.  
  274.     dsw1 = readinputport(0);         // DSW1
  275.     dsw2 = readinputport(1);         // DSW2
  276.  
  277.     switch (kageki_csport_sel)
  278.     {
  279.         case    0x00:            // DSW2 5,1 / DSW1 5,1
  280.             dsw = (((dsw2 & 0x10) >> 1) | ((dsw2 & 0x01) << 2) | ((dsw1 & 0x10) >> 3) | ((dsw1 & 0x01) >> 0));
  281.             break;
  282.         case    0x01:            // DSW2 7,3 / DSW1 7,3
  283.             dsw = (((dsw2 & 0x40) >> 3) | ((dsw2 & 0x04) >> 0) | ((dsw1 & 0x40) >> 5) | ((dsw1 & 0x04) >> 2));
  284.             break;
  285.         case    0x02:            // DSW2 6,2 / DSW1 6,2
  286.             dsw = (((dsw2 & 0x20) >> 2) | ((dsw2 & 0x02) << 1) | ((dsw1 & 0x20) >> 4) | ((dsw1 & 0x02) >> 1));
  287.             break;
  288.         case    0x03:            // DSW2 8,4 / DSW1 8,4
  289.             dsw = (((dsw2 & 0x80) >> 4) | ((dsw2 & 0x08) >> 1) | ((dsw1 & 0x80) >> 6) | ((dsw1 & 0x08) >> 3));
  290.             break;
  291.         default:
  292.             dsw = 0x00;
  293.         //    logerror("kageki_csport_sel error !! (0x%08X)\n", kageki_csport_sel);
  294.     }
  295.  
  296.     return (dsw & 0xff);
  297. }
  298.  
  299. static WRITE_HANDLER( kageki_csport_w )
  300. {
  301.     char mess[80];
  302.  
  303.     if (data > 0x3f)
  304.     {
  305.         // read dipsw port
  306.         kageki_csport_sel = (data & 0x03);
  307.     } else {
  308.         if (data > MAX_SAMPLES)
  309.         {
  310.             // stop samples
  311.             sample_stop(0);
  312.             sprintf(mess, "VOICE:%02X STOP", data);
  313.         } else {
  314.             // play samples
  315.             sample_start(0, data, 0);
  316.             sprintf(mess, "VOICE:%02X PLAY", data);
  317.         }
  318.     //    usrintf_showmessage(mess);
  319.     }
  320. }
  321.  
  322.  
  323. static struct MemoryReadAddress readmem[] =
  324. {
  325.     { 0x0000, 0x7fff, MRA_ROM },
  326.     { 0x8000, 0xbfff, MRA_BANK1 }, /* ROM + RAM */
  327.     { 0xc000, 0xdfff, MRA_RAM },
  328.     { 0xe000, 0xefff, tnzs_workram_r },    /* WORK RAM (shared by the 2 z80's */
  329.     { 0xf000, 0xf1ff, MRA_RAM },    /* VDC RAM */
  330.     { 0xf600, 0xf600, MRA_NOP },    /* ? */
  331.     { 0xf800, 0xfbff, MRA_RAM },    /* not in extrmatn and arkanoi2 (PROMs instead) */
  332.     { -1 }  /* end of table */
  333. };
  334.  
  335. static struct MemoryWriteAddress writemem[] =
  336. {
  337.     { 0x0000, 0x7fff, MWA_ROM },
  338.     { 0x8000, 0xbfff, MWA_BANK1 },    /* ROM + RAM */
  339.     { 0xc000, 0xdfff, MWA_RAM, &tnzs_objram },
  340.     { 0xe000, 0xefff, tnzs_workram_w, &tnzs_workram },
  341.     { 0xf000, 0xf1ff, MWA_RAM, &tnzs_vdcram },
  342.     { 0xf200, 0xf3ff, MWA_RAM, &tnzs_scrollram }, /* scrolling info */
  343.     { 0xf400, 0xf400, MWA_NOP },    /* ? */
  344.     { 0xf600, 0xf600, tnzs_bankswitch_w },
  345.     { 0xf800, 0xfbff, paletteram_xRRRRRGGGGGBBBBB_w, &paletteram },    /* not in extrmatn and arkanoi2 (PROMs instead) */
  346.     { -1 }  /* end of table */
  347. };
  348.  
  349. static struct MemoryReadAddress sub_readmem[] =
  350. {
  351.     { 0x0000, 0x7fff, MRA_ROM },
  352.     { 0x8000, 0x9fff, MRA_BANK2 },
  353.     { 0xb000, 0xb000, YM2203_status_port_0_r },
  354.     { 0xb001, 0xb001, YM2203_read_port_0_r },
  355.     { 0xc000, 0xc001, tnzs_mcu_r },    /* plain input ports in insectx (memory handler */
  356.                                     /* changed in insectx_init() ) */
  357.     { 0xd000, 0xdfff, MRA_RAM },
  358.     { 0xe000, 0xefff, tnzs_workram_sub_r },
  359.     { 0xf000, 0xf003, arkanoi2_sh_f000_r },    /* paddles in arkanoid2/plumppop; the ports are */
  360.                         /* read but not used by the other games, and are not read at */
  361.                         /* all by insectx. */
  362.     { -1 }  /* end of table */
  363. };
  364.  
  365. static struct MemoryWriteAddress sub_writemem[] =
  366. {
  367.     { 0x0000, 0x9fff, MWA_ROM },
  368.     { 0xa000, 0xa000, tnzs_bankswitch1_w },
  369.     { 0xb000, 0xb000, YM2203_control_port_0_w },
  370.     { 0xb001, 0xb001, YM2203_write_port_0_w },
  371.     { 0xc000, 0xc001, tnzs_mcu_w },    /* not present in insectx */
  372.     { 0xd000, 0xdfff, MWA_RAM },
  373.     { 0xe000, 0xefff, tnzs_workram_sub_w },
  374.     { -1 }  /* end of table */
  375. };
  376.  
  377. static struct MemoryReadAddress kageki_sub_readmem[] =
  378. {
  379.     { 0x0000, 0x7fff, MRA_ROM },
  380.     { 0x8000, 0x9fff, MRA_BANK2 },
  381.     { 0xb000, 0xb000, YM2203_status_port_0_r },
  382.     { 0xb001, 0xb001, YM2203_read_port_0_r },
  383.     { 0xc000, 0xc000, input_port_2_r },
  384.     { 0xc001, 0xc001, input_port_3_r },
  385.     { 0xc002, 0xc002, input_port_4_r },
  386.     { 0xd000, 0xdfff, MRA_RAM },
  387.     { 0xe000, 0xefff, tnzs_workram_sub_r },
  388.     { -1 }  /* end of table */
  389. };
  390.  
  391. static struct MemoryWriteAddress kageki_sub_writemem[] =
  392. {
  393.     { 0x0000, 0x9fff, MWA_ROM },
  394.     { 0xa000, 0xa000, tnzs_bankswitch1_w },
  395.     { 0xb000, 0xb000, YM2203_control_port_0_w },
  396.     { 0xb001, 0xb001, YM2203_write_port_0_w },
  397.     { 0xd000, 0xdfff, MWA_RAM },
  398.     { 0xe000, 0xefff, tnzs_workram_sub_w },
  399.     { -1 }  /* end of table */
  400. };
  401.  
  402. /* the bootleg board is different, it has a third CPU (and of course no mcu) */
  403.  
  404. static WRITE_HANDLER( tnzsb_sound_command_w )
  405. {
  406.     soundlatch_w(offset,data);
  407.     cpu_cause_interrupt(2,0xff);
  408. }
  409.  
  410. static struct MemoryReadAddress tnzsb_readmem1[] =
  411. {
  412.     { 0x0000, 0x7fff, MRA_ROM },
  413.     { 0x8000, 0x9fff, MRA_BANK2 },
  414.     { 0xb002, 0xb002, input_port_0_r },
  415.     { 0xb003, 0xb003, input_port_1_r },
  416.     { 0xc000, 0xc000, input_port_2_r },
  417.     { 0xc001, 0xc001, input_port_3_r },
  418.     { 0xc002, 0xc002, input_port_4_r },
  419.     { 0xd000, 0xdfff, MRA_RAM },
  420.     { 0xe000, 0xefff, tnzs_workram_sub_r },
  421.     { 0xf000, 0xf003, MRA_RAM },
  422.     { -1 }  /* end of table */
  423. };
  424.  
  425. static struct MemoryWriteAddress tnzsb_writemem1[] =
  426. {
  427.     { 0x0000, 0x9fff, MWA_ROM },
  428.     { 0xa000, 0xa000, tnzs_bankswitch1_w },
  429.     { 0xb004, 0xb004, tnzsb_sound_command_w },
  430.     { 0xd000, 0xdfff, MWA_RAM },
  431.     { 0xe000, 0xefff, tnzs_workram_sub_w },
  432.     { 0xf000, 0xf3ff, paletteram_xRRRRRGGGGGBBBBB_w, &paletteram },
  433.     { -1 }  /* end of table */
  434. };
  435.  
  436. static struct MemoryReadAddress tnzsb_readmem2[] =
  437. {
  438.     { 0x0000, 0x7fff, MRA_ROM },
  439.     { 0xc000, 0xdfff, MRA_RAM },
  440.     { -1 }  /* end of table */
  441. };
  442.  
  443. static struct MemoryWriteAddress tnzsb_writemem2[] =
  444. {
  445.     { 0x0000, 0x7fff, MWA_ROM },
  446.     { 0xc000, 0xdfff, MWA_RAM },
  447.     { -1 }  /* end of table */
  448. };
  449.  
  450. static struct IOReadPort tnzsb_readport[] =
  451. {
  452.     { 0x00, 0x00, YM2203_status_port_0_r  },
  453.     { 0x02, 0x02, soundlatch_r  },
  454.     { -1 }    /* end of table */
  455. };
  456.  
  457. static struct IOWritePort tnzsb_writeport[] =
  458. {
  459.     { 0x00, 0x00, YM2203_control_port_0_w  },
  460.     { 0x01, 0x01, YM2203_write_port_0_w  },
  461.     { -1 }    /* end of table */
  462. };
  463.  
  464.  
  465.  
  466. INPUT_PORTS_START( extrmatn )
  467.     PORT_START        /* DSW A */
  468.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  469.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  470.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  471.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  472.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  473.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  474.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  475.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  476.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  477.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  478.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  479.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  480.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  481.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  482.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  483.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  484.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
  485.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
  486.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  487.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  488.  
  489.     PORT_START        /* DSW B */
  490.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  491.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  492.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  493.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  494.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  495.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  496.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  497.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  498.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  499.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  500.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  501.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  502.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  503.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  504.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  505.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  506.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  507.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  508.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  509.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  510.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  511.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  512.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  513.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  514.  
  515.     PORT_START        /* IN0 */
  516.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
  517.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
  518.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
  519.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
  520.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  521.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
  522.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  523.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  524.  
  525.     PORT_START        /* IN1 */
  526.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
  527.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  528.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
  529.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
  530.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  531.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  532.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  533.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  534.  
  535.     PORT_START        /* IN2 */
  536.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
  537.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
  538.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  539.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  540.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
  541.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
  542.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  543.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  544. INPUT_PORTS_END
  545.  
  546. INPUT_PORTS_START( arkanoi2 )
  547.     PORT_START        /* DSW1 - IN2 */
  548.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  549.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  550.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  551.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  552.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  553.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  554.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  555.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
  556.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  557.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  558.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  559.     PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
  560.     PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) )
  561.     PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
  562.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  563.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  564.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) )
  565.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
  566.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_4C ) )
  567.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
  568.  
  569.     PORT_START        /* DSW2 - IN3 */
  570.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
  571.     PORT_DIPSETTING(    0x02, "Easy" )
  572.     PORT_DIPSETTING(    0x03, "Normal" )
  573.     PORT_DIPSETTING(    0x01, "Hard" )
  574.     PORT_DIPSETTING(    0x00, "Very Hard" )
  575.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
  576.     PORT_DIPSETTING(    0x00, "50k 150k" )
  577.     PORT_DIPSETTING(    0x0c, "100k 200k" )
  578.     PORT_DIPSETTING(    0x04, "50k Only" )
  579.     PORT_DIPSETTING(    0x08, "100k Only" )
  580.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
  581.     PORT_DIPSETTING(    0x20, "2" )
  582.     PORT_DIPSETTING(    0x30, "3" )
  583.     PORT_DIPSETTING(    0x10, "4" )
  584.     PORT_DIPSETTING(    0x00, "5" )
  585.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  586.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  587.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  588.     PORT_DIPNAME( 0x80, 0x00, "Allow Continue" )
  589.     PORT_DIPSETTING(    0x80, DEF_STR( No ) )
  590.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  591.  
  592.     PORT_START        /* IN1 - read at c000 (sound cpu) */
  593.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  594.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  595.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  596.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
  597.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  598.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  599.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  600.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  601.  
  602.     PORT_START        /* empty */
  603.  
  604.     PORT_START        /* empty */
  605.  
  606.     PORT_START        /* spinner 1 - read at f000/1 */
  607.     PORT_ANALOG( 0x0fff, 0x0000, IPT_DIAL, 70, 15, 0, 0 )
  608.     PORT_BIT   ( 0x1000, IP_ACTIVE_LOW,  IPT_COIN2 )
  609.     PORT_BIT   ( 0x2000, IP_ACTIVE_HIGH, IPT_COIN3 )
  610.     PORT_BIT   ( 0x4000, IP_ACTIVE_LOW,  IPT_COIN1 )
  611.     PORT_BIT   ( 0x8000, IP_ACTIVE_LOW,  IPT_TILT )    /* arbitrarily assigned, handled by the mcu */
  612.  
  613.     PORT_START        /* spinner 2 - read at f002/3 */
  614.     PORT_ANALOG( 0x0fff, 0x0000, IPT_DIAL | IPF_PLAYER2, 70, 15, 0, 0 )
  615.     PORT_BIT   ( 0xf000, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  616. INPUT_PORTS_END
  617.  
  618. INPUT_PORTS_START( ark2us )
  619.     PORT_START        /* DSW1 - IN2 */
  620.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  621.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  622.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  623.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  624.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  625.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  626.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  627.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
  628.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  629.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  630.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  631.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  632.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  633.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  634.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  635.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  636.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
  637.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
  638.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  639.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  640.  
  641.     PORT_START        /* DSW2 - IN3 */
  642.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
  643.     PORT_DIPSETTING(    0x02, "Easy" )
  644.     PORT_DIPSETTING(    0x03, "Normal" )
  645.     PORT_DIPSETTING(    0x01, "Hard" )
  646.     PORT_DIPSETTING(    0x00, "Very Hard" )
  647.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
  648.     PORT_DIPSETTING(    0x00, "50k 150k" )
  649.     PORT_DIPSETTING(    0x0c, "100k 200k" )
  650.     PORT_DIPSETTING(    0x04, "50k Only" )
  651.     PORT_DIPSETTING(    0x08, "100k Only" )
  652.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
  653.     PORT_DIPSETTING(    0x20, "2" )
  654.     PORT_DIPSETTING(    0x30, "3" )
  655.     PORT_DIPSETTING(    0x10, "4" )
  656.     PORT_DIPSETTING(    0x00, "5" )
  657.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  658.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  659.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  660.     PORT_DIPNAME( 0x80, 0x00, "Allow Continue" )
  661.     PORT_DIPSETTING(    0x80, DEF_STR( No ) )
  662.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  663.  
  664.     PORT_START        /* IN1 - read at c000 (sound cpu) */
  665.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  666.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  667.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  668.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
  669.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  670.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  671.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  672.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  673.  
  674.     PORT_START        /* empty */
  675.  
  676.     PORT_START        /* empty */
  677.  
  678.     PORT_START        /* spinner 1 - read at f000/1 */
  679.     PORT_ANALOG( 0x0fff, 0x0000, IPT_DIAL, 70, 15, 0, 0 )
  680.     PORT_BIT   ( 0x1000, IP_ACTIVE_LOW,  IPT_COIN2 )
  681.     PORT_BIT   ( 0x2000, IP_ACTIVE_HIGH, IPT_COIN3 )
  682.     PORT_BIT   ( 0x4000, IP_ACTIVE_LOW,  IPT_COIN1 )
  683.     PORT_BIT   ( 0x8000, IP_ACTIVE_LOW,  IPT_TILT )    /* arbitrarily assigned, handled by the mcu */
  684.  
  685.     PORT_START        /* spinner 2 - read at f002/3 */
  686.     PORT_ANALOG( 0x0fff, 0x0000, IPT_DIAL | IPF_PLAYER2, 70, 15, 0, 0 )
  687.     PORT_BIT   ( 0xf000, IP_ACTIVE_LOW,  IPT_UNKNOWN )
  688. INPUT_PORTS_END
  689.  
  690. INPUT_PORTS_START( plumppop )
  691.     PORT_START        /* DSW A */
  692.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  693.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  694.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  695.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  696.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  697.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  698.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  699.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
  700.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  701.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  702.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  703.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  704.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  705.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  706.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  707.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  708.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
  709.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
  710.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  711.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  712.  
  713.     PORT_START        /* DSW B */
  714.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  715.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  716.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  717.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  718.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  719.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  720.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  721.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  722.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  723.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  724.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  725.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  726.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
  727.     PORT_DIPSETTING(    0x20, "2" )
  728.     PORT_DIPSETTING(    0x30, "3" )
  729.     PORT_DIPSETTING(    0x10, "4" )
  730.     PORT_DIPSETTING(    0x00, "5" )
  731.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  732.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  733.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  734.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  735.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  736.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  737.  
  738.     PORT_START        /* IN0 */
  739.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  740.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  741.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  742.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  743.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  744.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_CHEAT )
  745.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  746.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  747.  
  748.     PORT_START        /* IN1 */
  749.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  750.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  751.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  752.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  753.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  754.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_CHEAT | IPF_PLAYER2 )
  755.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  756.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  757.  
  758.     PORT_START        /* IN2 */
  759.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
  760.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
  761.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  762.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  763.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
  764.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
  765.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  766.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  767.  
  768.     PORT_START        /* spinner 1 - read at f000/1 */
  769.     PORT_ANALOG( 0xffff, 0x0000, IPT_DIAL, 70, 15, 0, 0 )
  770.  
  771.     PORT_START        /* spinner 2 - read at f002/3 */
  772.     PORT_ANALOG( 0xffff, 0x0000, IPT_DIAL | IPF_PLAYER2, 70, 15, 0, 0 )
  773. INPUT_PORTS_END
  774.  
  775. INPUT_PORTS_START( drtoppel )
  776.     PORT_START        /* DSW A */
  777.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  778.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  779.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  780.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  781.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  782.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  783.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  784.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
  785.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  786.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  787.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  788.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  789.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  790.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  791.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  792.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  793.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
  794.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
  795.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  796.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  797.  
  798.     PORT_START        /* DSW B */
  799.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
  800.     PORT_DIPSETTING(    0x02, "Easy" )
  801.     PORT_DIPSETTING(    0x03, "Medium" )
  802.     PORT_DIPSETTING(    0x01, "Hard" )
  803.     PORT_DIPSETTING(    0x00, "Hardest" )
  804.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
  805.     PORT_DIPSETTING(    0x0c, "30000" )
  806.     PORT_DIPSETTING(    0x00, DEF_STR( Unknown ) )
  807.     PORT_DIPSETTING(    0x04, DEF_STR( Unknown ) )
  808.     PORT_DIPSETTING(    0x08, DEF_STR( Unknown ) )
  809.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
  810.     PORT_DIPSETTING(    0x20, "2" )
  811.     PORT_DIPSETTING(    0x30, "3" )
  812.     PORT_DIPSETTING(    0x10, "4" )
  813.     PORT_DIPSETTING(    0x00, "5" )
  814.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  815.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  816.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  817.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  818.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  819.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  820.  
  821.     PORT_START        /* IN0 */
  822.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
  823.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
  824.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
  825.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
  826.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  827.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
  828.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  829.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  830.  
  831.     PORT_START        /* IN1 */
  832.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
  833.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  834.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
  835.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
  836.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  837.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  838.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  839.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  840.  
  841.     PORT_START        /* IN2 */
  842.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
  843.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
  844.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  845.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  846.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
  847.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
  848.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  849.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  850. INPUT_PORTS_END
  851.  
  852. INPUT_PORTS_START( chukatai )
  853.     PORT_START        /* DSW A */
  854.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  855.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  856.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  857.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  858.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  859.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  860.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  861.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
  862.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  863.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  864.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  865.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  866.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  867.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  868.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  869.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  870.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
  871.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
  872.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  873.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  874.  
  875.     PORT_START        /* DSW B */
  876.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
  877.     PORT_DIPSETTING(    0x02, "Easy" )
  878.     PORT_DIPSETTING(    0x03, "Medium" )
  879.     PORT_DIPSETTING(    0x01, "Hard" )
  880.     PORT_DIPSETTING(    0x00, "Hardest" )
  881.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  882.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  883.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  884.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  885.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  886.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  887. /* Bonus life awards are to be verified
  888.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
  889.     PORT_DIPSETTING(    0x00, "50000 150000" )
  890.     PORT_DIPSETTING(    0x0c, "70000 200000" )
  891.     PORT_DIPSETTING(    0x04, "100000 250000" )
  892.     PORT_DIPSETTING(    0x08, "200000 300000" )
  893. */
  894.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
  895.     PORT_DIPSETTING(    0x00, "1" )
  896.     PORT_DIPSETTING(    0x10, "2" )
  897.     PORT_DIPSETTING(    0x30, "3" )
  898.     PORT_DIPSETTING(    0x20, "4" )
  899.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  900.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  901.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  902.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  903.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  904.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  905.  
  906.     PORT_START        /* IN0 */
  907.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
  908.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
  909.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
  910.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
  911.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  912.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
  913.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  914.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  915.  
  916.     PORT_START        /* IN1 */
  917.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
  918.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  919.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
  920.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
  921.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  922.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  923.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  924.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  925.  
  926.     PORT_START        /* IN2 */
  927.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
  928.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
  929.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  930.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  931.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
  932.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
  933.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  934.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  935. INPUT_PORTS_END
  936.  
  937. INPUT_PORTS_START( tnzs )
  938.     PORT_START        /* DSW A */
  939.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  940.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  941.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  942.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  943.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  944.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  945.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  946.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  947.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  948.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  949.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  950.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  951.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  952.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  953.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  954.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  955.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
  956.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
  957.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  958.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  959.  
  960.     PORT_START        /* DSW B */
  961.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
  962.     PORT_DIPSETTING(    0x02, "Easy" )
  963.     PORT_DIPSETTING(    0x03, "Medium" )
  964.     PORT_DIPSETTING(    0x01, "Hard" )
  965.     PORT_DIPSETTING(    0x00, "Hardest" )
  966.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
  967.     PORT_DIPSETTING(    0x00, "50000 150000" )
  968.     PORT_DIPSETTING(    0x0c, "70000 200000" )
  969.     PORT_DIPSETTING(    0x04, "100000 250000" )
  970.     PORT_DIPSETTING(    0x08, "200000 300000" )
  971.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
  972.     PORT_DIPSETTING(    0x20, "2" )
  973.     PORT_DIPSETTING(    0x30, "3" )
  974.     PORT_DIPSETTING(    0x00, "4" )
  975.     PORT_DIPSETTING(    0x10, "5" )
  976.     PORT_DIPNAME( 0x40, 0x40, "Allow Continue" )
  977.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  978.     PORT_DIPSETTING(    0x40, DEF_STR( Yes ) )
  979.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  980.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  981.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  982.  
  983.     PORT_START        /* IN0 */
  984.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
  985.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
  986.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
  987.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
  988.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  989.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
  990.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  991.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  992.  
  993.     PORT_START        /* IN1 */
  994.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
  995.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  996.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
  997.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
  998.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  999.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  1000.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1001.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  1002.  
  1003.     PORT_START        /* IN2 */
  1004.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
  1005.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
  1006.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1007.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1008.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
  1009.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
  1010.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1011.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1012. INPUT_PORTS_END
  1013.  
  1014. INPUT_PORTS_START( tnzsb )
  1015.     PORT_START        /* DSW A */
  1016.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  1017.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  1018.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  1019.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  1020.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  1021.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1022.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  1023.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  1024.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  1025.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1026.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  1027.     PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
  1028.     PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) )
  1029.     PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
  1030.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  1031.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  1032.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) )
  1033.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
  1034.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_4C ) )
  1035.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
  1036.  
  1037.     PORT_START        /* DSW B */
  1038.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
  1039.     PORT_DIPSETTING(    0x02, "Easy" )
  1040.     PORT_DIPSETTING(    0x03, "Medium" )
  1041.     PORT_DIPSETTING(    0x01, "Hard" )
  1042.     PORT_DIPSETTING(    0x00, "Hardest" )
  1043.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
  1044.     PORT_DIPSETTING(    0x00, "50000 150000" )
  1045.     PORT_DIPSETTING(    0x0c, "70000 200000" )
  1046.     PORT_DIPSETTING(    0x04, "100000 250000" )
  1047.     PORT_DIPSETTING(    0x08, "200000 300000" )
  1048.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
  1049.     PORT_DIPSETTING(    0x20, "2" )
  1050.     PORT_DIPSETTING(    0x30, "3" )
  1051.     PORT_DIPSETTING(    0x00, "4" )
  1052.     PORT_DIPSETTING(    0x10, "5" )
  1053.     PORT_DIPNAME( 0x40, 0x40, "Allow Continue" )
  1054.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  1055.     PORT_DIPSETTING(    0x40, DEF_STR( Yes ) )
  1056.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  1057.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  1058.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1059.  
  1060.     PORT_START        /* IN0 */
  1061.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
  1062.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
  1063.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
  1064.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
  1065.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  1066.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
  1067.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1068.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  1069.  
  1070.     PORT_START        /* IN1 */
  1071.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_COCKTAIL )
  1072.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_COCKTAIL )
  1073.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_COCKTAIL )
  1074.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_COCKTAIL )
  1075.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  1076.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
  1077.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1078.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  1079.  
  1080.     PORT_START        /* IN2 */
  1081.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
  1082.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
  1083.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1084.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1085.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
  1086.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
  1087.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1088.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1089. INPUT_PORTS_END
  1090.  
  1091. INPUT_PORTS_START( tnzs2 )
  1092.     PORT_START        /* DSW A */
  1093.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  1094.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  1095.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  1096.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  1097.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  1098.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1099.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  1100.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  1101.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  1102.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1103.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  1104.     PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
  1105.     PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) )
  1106.     PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
  1107.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  1108.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  1109.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) )
  1110.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
  1111.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_4C ) )
  1112.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
  1113.  
  1114.     PORT_START        /* DSW B */
  1115.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
  1116.     PORT_DIPSETTING(    0x02, "Easy" )
  1117.     PORT_DIPSETTING(    0x03, "Medium" )
  1118.     PORT_DIPSETTING(    0x01, "Hard" )
  1119.     PORT_DIPSETTING(    0x00, "Hardest" )
  1120.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
  1121.     PORT_DIPSETTING(    0x00, "10000 100000" )
  1122.     PORT_DIPSETTING(    0x0c, "10000 150000" )
  1123.     PORT_DIPSETTING(    0x08, "10000 200000" )
  1124.     PORT_DIPSETTING(    0x04, "10000 300000" )
  1125.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
  1126.     PORT_DIPSETTING(    0x20, "2" )
  1127.     PORT_DIPSETTING(    0x30, "3" )
  1128.     PORT_DIPSETTING(    0x00, "4" )
  1129.     PORT_DIPSETTING(    0x10, "5" )
  1130.     PORT_DIPNAME( 0x40, 0x40, "Allow Continue" )
  1131.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  1132.     PORT_DIPSETTING(    0x40, DEF_STR( Yes ) )
  1133.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  1134.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  1135.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1136.  
  1137.     PORT_START        /* IN0 */
  1138.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
  1139.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
  1140.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
  1141.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
  1142.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  1143.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
  1144.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1145.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  1146.  
  1147.     PORT_START        /* IN1 */
  1148.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
  1149.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  1150.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
  1151.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
  1152.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  1153.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  1154.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1155.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  1156.  
  1157.     PORT_START        /* IN2 */
  1158.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
  1159.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
  1160.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1161.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1162.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
  1163.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
  1164.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1165.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1166. INPUT_PORTS_END
  1167.  
  1168. INPUT_PORTS_START( insectx )
  1169.     PORT_START        /* DSW A */
  1170.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  1171.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  1172.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  1173.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  1174.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  1175.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1176.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  1177.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
  1178.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  1179.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  1180.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  1181.     PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
  1182.     PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) )
  1183.     PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
  1184.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  1185.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  1186.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) )
  1187.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
  1188.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_4C ) )
  1189.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
  1190.  
  1191.     PORT_START        /* DSW B */
  1192.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  1193.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  1194.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1195.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  1196.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  1197.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1198.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  1199.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  1200.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1201.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  1202.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  1203.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1204.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
  1205.     PORT_DIPSETTING(    0x00, "1" )
  1206.     PORT_DIPSETTING(    0x10, "2" )
  1207.     PORT_DIPSETTING(    0x30, "3" )
  1208.     PORT_DIPSETTING(    0x20, "4" )
  1209.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  1210.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  1211.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1212.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  1213.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  1214.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1215.  
  1216.     PORT_START        /* IN0 */
  1217.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
  1218.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
  1219.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
  1220.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
  1221.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  1222.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
  1223.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1224.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  1225.  
  1226.     PORT_START        /* IN1 */
  1227.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_COCKTAIL )
  1228.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_COCKTAIL )
  1229.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_COCKTAIL )
  1230.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_COCKTAIL )
  1231.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  1232.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
  1233.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1234.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  1235.  
  1236.     PORT_START        /* IN2 */
  1237.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
  1238.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
  1239.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
  1240.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
  1241.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1242.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1243.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1244.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1245. INPUT_PORTS_END
  1246.  
  1247. INPUT_PORTS_START( kageki )
  1248.     PORT_START        /* DSW A */
  1249.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
  1250.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  1251.     PORT_DIPSETTING(    0x01, DEF_STR( Cocktail ) )
  1252.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
  1253.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  1254.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1255.     PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
  1256.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
  1257.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  1258.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  1259.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) )
  1260.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  1261.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) )
  1262.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  1263.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  1264.     PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) )
  1265.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) )
  1266.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) )
  1267.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) )
  1268.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
  1269.  
  1270.     PORT_START        /* DSW B */
  1271.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
  1272.     PORT_DIPSETTING(    0x02, "Easy" )
  1273.     PORT_DIPSETTING(    0x03, "Medium" )
  1274.     PORT_DIPSETTING(    0x01, "Hard" )
  1275.     PORT_DIPSETTING(    0x00, "Hardest" )
  1276.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  1277.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  1278.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1279.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  1280.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  1281.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1282.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  1283.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  1284.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1285.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  1286.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  1287.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1288.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  1289.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  1290.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1291.     PORT_DIPNAME( 0x80, 0x80, "Allow Continue" )
  1292.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  1293.     PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
  1294.  
  1295.     PORT_START        /* IN0 */
  1296.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
  1297.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
  1298.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
  1299.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
  1300.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  1301.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
  1302.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1303.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
  1304.  
  1305.     PORT_START        /* IN1 */
  1306.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
  1307.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  1308.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
  1309.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
  1310.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  1311.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  1312.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1313.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
  1314.  
  1315.     PORT_START        /* IN2 */
  1316.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 )
  1317.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
  1318.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1319.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1320.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
  1321.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
  1322.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1323.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1324. INPUT_PORTS_END
  1325.  
  1326.  
  1327. static struct GfxLayout arkanoi2_charlayout =
  1328. {
  1329.     16,16,
  1330.     4096,
  1331.     4,
  1332.     { 3*4096*32*8, 2*4096*32*8, 1*4096*32*8, 0*4096*32*8 },
  1333.     { 0, 1, 2, 3, 4, 5, 6, 7,
  1334.             8*8+0,8*8+1,8*8+2,8*8+3,8*8+4,8*8+5,8*8+6,8*8+7},
  1335.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  1336.             16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
  1337.     32*8
  1338. };
  1339.  
  1340. static struct GfxLayout tnzs_charlayout =
  1341. {
  1342.     16,16,
  1343.     8192,
  1344.     4,
  1345.     { 3*8192*32*8, 2*8192*32*8, 1*8192*32*8, 0*8192*32*8 },
  1346.     { 0, 1, 2, 3, 4, 5, 6, 7,
  1347.             8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
  1348.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  1349.             16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
  1350.     32*8
  1351. };
  1352.  
  1353. static struct GfxLayout insectx_charlayout =
  1354. {
  1355.     16,16,
  1356.     8192,
  1357.     4,
  1358.     { 8, 0, 8192*64*8+8, 8192*64*8 },
  1359.     { 0, 1, 2, 3, 4, 5, 6, 7,
  1360.             8*16+0, 8*16+1, 8*16+2, 8*16+3, 8*16+4, 8*16+5, 8*16+6, 8*16+7 },
  1361.     { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
  1362.         16*16, 17*16, 18*16, 19*16, 20*16, 21*16, 22*16, 23*16 },
  1363.     64*8
  1364. };
  1365.  
  1366. static struct GfxDecodeInfo arkanoi2_gfxdecodeinfo[] =
  1367. {
  1368.     { REGION_GFX1, 0, &arkanoi2_charlayout, 0, 32 },
  1369.     { -1 } /* end of array */
  1370. };
  1371.  
  1372. static struct GfxDecodeInfo tnzs_gfxdecodeinfo[] =
  1373. {
  1374.     { REGION_GFX1, 0, &tnzs_charlayout, 0, 32 },
  1375.     { -1 }    /* end of array */
  1376. };
  1377.  
  1378. static struct GfxDecodeInfo insectx_gfxdecodeinfo[] =
  1379. {
  1380.     { REGION_GFX1, 0, &insectx_charlayout, 0, 32 },
  1381.     { -1 }    /* end of array */
  1382. };
  1383.  
  1384.  
  1385.  
  1386. static struct YM2203interface ym2203_interface =
  1387. {
  1388.     1,            /* 1 chip */
  1389.     3000000,    /* 3 MHz ??? */
  1390.     { YM2203_VOL(30,30) },
  1391.     { input_port_0_r },        /* DSW1 connected to port A */
  1392.     { input_port_1_r },        /* DSW2 connected to port B */
  1393.     { 0 },
  1394.     { 0 }
  1395. };
  1396.  
  1397.  
  1398. /* handler called by the 2203 emulator when the internal timers cause an IRQ */
  1399. static void irqhandler(int irq)
  1400. {
  1401.     cpu_set_nmi_line(2,irq ? ASSERT_LINE : CLEAR_LINE);
  1402. }
  1403.  
  1404. static struct YM2203interface ym2203b_interface =
  1405. {
  1406.     1,            /* 1 chip */
  1407.     3000000,    /* 3 MHz ??? */
  1408.     { YM2203_VOL(100,100) },
  1409.     { 0 },
  1410.     { 0 },
  1411.     { 0 },
  1412.     { 0 },
  1413.     { irqhandler }
  1414. };
  1415.  
  1416. static struct YM2203interface kageki_ym2203_interface =
  1417. {
  1418.     1,                    /* 1 chip */
  1419.     3000000,                /* 12000000/4 ??? */
  1420.     { YM2203_VOL(35, 15) },
  1421.     { kageki_csport_r },
  1422.     { 0 },
  1423.     { 0 },
  1424.     { kageki_csport_w },
  1425. };
  1426.  
  1427. static struct Samplesinterface samples_interface =
  1428. {
  1429.     1,                    /* 1 channel */
  1430.     100                    /* volume */
  1431. };
  1432.  
  1433. static struct CustomSound_interface custom_interface =
  1434. {
  1435.     kageki_init_samples,
  1436.     0,
  1437.     0
  1438. };
  1439.  
  1440.  
  1441. static struct MachineDriver machine_driver_arkanoi2 =
  1442. {
  1443.     /* basic machine hardware */
  1444.     {
  1445.         {
  1446.             CPU_Z80,
  1447.             8000000,    /* ?? Hz (only crystal is 12MHz) */
  1448.                         /* 8MHz is wrong, but extrmatn doesn't work properly at 6MHz */
  1449.             readmem,writemem,0,0,
  1450.             tnzs_interrupt,1
  1451.         },
  1452.         {
  1453.             CPU_Z80,
  1454.             6000000,    /* ?? Hz */
  1455.             sub_readmem,sub_writemem,0,0,
  1456.             interrupt,1
  1457.         },
  1458.     },
  1459.     60, DEFAULT_60HZ_VBLANK_DURATION,        /* video frequency (Hz), duration */
  1460.     100,                            /* cpu slices */
  1461.     tnzs_init_machine,
  1462.  
  1463.     /* video hardware */
  1464.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1465.     arkanoi2_gfxdecodeinfo,
  1466.     512, 512,
  1467.     arkanoi2_vh_convert_color_prom,        /* convert color p-roms */
  1468.  
  1469.     VIDEO_TYPE_RASTER,
  1470.     0,
  1471.     tnzs_vh_start,
  1472.     tnzs_vh_stop,
  1473.     arkanoi2_vh_screenrefresh,
  1474.  
  1475.     /* sound hardware */
  1476.     0,0,0,0,
  1477.     {
  1478.         {
  1479.             SOUND_YM2203,
  1480.             &ym2203_interface
  1481.         }
  1482.     }
  1483. };
  1484.  
  1485. static struct MachineDriver machine_driver_drtoppel =
  1486. {
  1487.     /* basic machine hardware */
  1488.     {
  1489.         {
  1490.             CPU_Z80,
  1491.             12000000/2,        /* 6.0 MHz ??? - Main board Crystal is 12Mhz */
  1492.             readmem,writemem,0,0,
  1493.             tnzs_interrupt,1
  1494.         },
  1495.         {
  1496.             CPU_Z80,
  1497.             12000000/2,        /* 6.0 MHz ??? - Main board Crystal is 12Mhz */
  1498.             sub_readmem,sub_writemem,0,0,
  1499.             interrupt,1
  1500.         },
  1501.     },
  1502.     60, DEFAULT_60HZ_VBLANK_DURATION,        /* video frequency (Hz), duration */
  1503.     100,                            /* cpu slices */
  1504.     tnzs_init_machine,
  1505.  
  1506.     /* video hardware */
  1507.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1508.     tnzs_gfxdecodeinfo,
  1509.     512, 512,
  1510.     arkanoi2_vh_convert_color_prom,        /* convert color bproms */
  1511.  
  1512.     VIDEO_TYPE_RASTER,
  1513.     0,
  1514.     tnzs_vh_start,
  1515.     tnzs_vh_stop,
  1516.     arkanoi2_vh_screenrefresh,
  1517.  
  1518.     /* sound hardware */
  1519.     0,0,0,0,
  1520.     {
  1521.         {
  1522.             SOUND_YM2203,
  1523.             &ym2203_interface
  1524.         }
  1525.     }
  1526. };
  1527.  
  1528. static struct MachineDriver machine_driver_tnzs =
  1529. {
  1530.     /* basic machine hardware */
  1531.     {
  1532.         {
  1533.             CPU_Z80,
  1534.             12000000/2,        /* 6.0 MHz ??? - Main board Crystal is 12Mhz */
  1535.             readmem,writemem,0,0,
  1536.             tnzs_interrupt,1
  1537.         },
  1538.         {
  1539.             CPU_Z80,
  1540.             12000000/2,        /* 6.0 MHz ??? - Main board Crystal is 12Mhz */
  1541.             sub_readmem,sub_writemem,0,0,
  1542.             interrupt,1
  1543.         }
  1544.     },
  1545.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1546.     200,    /* 100 CPU slices per frame - an high value to ensure proper */
  1547.             /* synchronization of the CPUs */
  1548.     tnzs_init_machine,
  1549.  
  1550.     /* video hardware */
  1551.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1552.     tnzs_gfxdecodeinfo,
  1553.     512, 512,
  1554.     0,
  1555.  
  1556.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1557.     0,
  1558.     tnzs_vh_start,
  1559.     tnzs_vh_stop,
  1560.     tnzs_vh_screenrefresh,
  1561.  
  1562.     /* sound hardware */
  1563.     0,0,0,0,
  1564.     {
  1565.         {
  1566.             SOUND_YM2203,
  1567.             &ym2203_interface
  1568.         }
  1569.     }
  1570. };
  1571.  
  1572. static struct MachineDriver machine_driver_tnzsb =
  1573. {
  1574.     /* basic machine hardware */
  1575.     {
  1576.         {
  1577.             CPU_Z80,
  1578.             6000000,        /* 6 Mhz(?) */
  1579.             readmem,writemem,0,0,
  1580.             tnzs_interrupt,1
  1581.         },
  1582.         {
  1583.             CPU_Z80,
  1584.             6000000,        /* 6 Mhz(?) */
  1585.             tnzsb_readmem1,tnzsb_writemem1,0,0,
  1586.             interrupt,1
  1587.         },
  1588.         {
  1589.             CPU_Z80,
  1590.             4000000,        /* 4 Mhz??? */
  1591.             tnzsb_readmem2,tnzsb_writemem2,tnzsb_readport,tnzsb_writeport,
  1592.             ignore_interrupt,1
  1593.         }
  1594.     },
  1595.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1596.     200,    /* 100 CPU slices per frame - an high value to ensure proper */
  1597.             /* synchronization of the CPUs */
  1598.     tnzs_init_machine,
  1599.  
  1600.     /* video hardware */
  1601.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1602.     tnzs_gfxdecodeinfo,
  1603.     512, 512,
  1604.     0,
  1605.  
  1606.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1607.     0,
  1608.     tnzs_vh_start,
  1609.     tnzs_vh_stop,
  1610.     tnzs_vh_screenrefresh,
  1611.  
  1612.     /* sound hardware */
  1613.     0,0,0,0,
  1614.     {
  1615.         {
  1616.             SOUND_YM2203,
  1617.             &ym2203b_interface
  1618.         }
  1619.     }
  1620. };
  1621.  
  1622. static struct MachineDriver machine_driver_insectx =
  1623. {
  1624.     /* basic machine hardware */
  1625.     {
  1626.         {
  1627.             CPU_Z80,
  1628.             6000000,    /* 6 Mhz(?) */
  1629.             readmem,writemem,0,0,
  1630.             tnzs_interrupt,1
  1631.         },
  1632.         {
  1633.             CPU_Z80,
  1634.             6000000,    /* 6 Mhz(?) */
  1635.             sub_readmem,sub_writemem,0,0,
  1636.             interrupt,1
  1637.         }
  1638.     },
  1639.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1640.     200,    /* 100 CPU slices per frame - an high value to ensure proper */
  1641.             /* synchronization of the CPUs */
  1642.     tnzs_init_machine,
  1643.  
  1644.     /* video hardware */
  1645.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1646.     insectx_gfxdecodeinfo,
  1647.     512, 512,
  1648.     0,
  1649.  
  1650.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1651.     0,
  1652.     tnzs_vh_start,
  1653.     tnzs_vh_stop,
  1654.     tnzs_vh_screenrefresh,
  1655.  
  1656.     /* sound hardware */
  1657.     0,0,0,0,
  1658.     {
  1659.         {
  1660.             SOUND_YM2203,
  1661.             &ym2203_interface
  1662.         }
  1663.     }
  1664. };
  1665.  
  1666. static struct MachineDriver machine_driver_kageki =
  1667. {
  1668.     {
  1669.         {
  1670.             CPU_Z80,
  1671.             6000000,        /* 12000000/2 ??? */
  1672.             readmem, writemem, 0, 0,
  1673.             tnzs_interrupt, 1
  1674.         },
  1675.         {
  1676.             CPU_Z80,
  1677.             4000000,        /* 12000000/3 ??? */
  1678.             kageki_sub_readmem, kageki_sub_writemem, 0, 0,
  1679.             interrupt, 1
  1680.         }
  1681.     },
  1682.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1683.     200,    /* 200 CPU slices per frame - an high value to ensure proper */
  1684.         /* synchronization of the CPUs */
  1685.     tnzs_init_machine,
  1686.  
  1687.     /* video hardware */
  1688.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  1689.     tnzs_gfxdecodeinfo,
  1690.     512, 512,
  1691.     0,
  1692.  
  1693.     VIDEO_TYPE_RASTER|VIDEO_MODIFIES_PALETTE,
  1694.     0,
  1695.     tnzs_vh_start,
  1696.     tnzs_vh_stop,
  1697.     tnzs_vh_screenrefresh,
  1698.  
  1699.     /* sound hardware */
  1700.     0, 0, 0, 0,
  1701.     {
  1702.         {
  1703.             SOUND_YM2203,
  1704.             &kageki_ym2203_interface
  1705.         },
  1706.         {
  1707.             SOUND_SAMPLES,
  1708.             &samples_interface
  1709.         },
  1710.         {
  1711.             SOUND_CUSTOM,
  1712.             &custom_interface
  1713.         }
  1714.     }
  1715. };
  1716.  
  1717.  
  1718.  
  1719. /***************************************************************************
  1720.  
  1721.   Game driver(s)
  1722.  
  1723. ***************************************************************************/
  1724.  
  1725. ROM_START( extrmatn )
  1726.     ROM_REGION( 0x30000, REGION_CPU1 )                /* Region 0 - main cpu */
  1727.     ROM_LOAD( "b06-20.bin", 0x00000, 0x08000, 0x04e3fc1f )
  1728.     ROM_CONTINUE(           0x18000, 0x08000 )                /* banked at 8000-bfff */
  1729.     ROM_LOAD( "b06-21.bin", 0x20000, 0x10000, 0x1614d6a2 )    /* banked at 8000-bfff */
  1730.  
  1731.     ROM_REGION( 0x18000, REGION_CPU2 )                /* Region 2 - sound cpu */
  1732.     ROM_LOAD( "b06-06.bin", 0x00000, 0x08000, 0x744f2c84 )
  1733.     ROM_CONTINUE(           0x10000, 0x08000 )    /* banked at 8000-9fff */
  1734.  
  1735.     ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1736.     ROM_LOAD( "b06-01.bin", 0x00000, 0x20000, 0xd2afbf7e )
  1737.     ROM_LOAD( "b06-02.bin", 0x20000, 0x20000, 0xe0c2757a )
  1738.     ROM_LOAD( "b06-03.bin", 0x40000, 0x20000, 0xee80ab9d )
  1739.     ROM_LOAD( "b06-04.bin", 0x60000, 0x20000, 0x3697ace4 )
  1740.  
  1741.     ROM_REGION( 0x0400, REGION_PROMS )
  1742.     ROM_LOAD( "b06-09.bin", 0x00000, 0x200, 0xf388b361 )    /* hi bytes */
  1743.     ROM_LOAD( "b06-08.bin", 0x00200, 0x200, 0x10c9aac3 )    /* lo bytes */
  1744. ROM_END
  1745.  
  1746. ROM_START( arkanoi2 )
  1747.     ROM_REGION( 0x30000, REGION_CPU1 )                /* Region 0 - main cpu */
  1748.     ROM_LOAD( "a2-05.rom",  0x00000, 0x08000, 0x136edf9d )
  1749.     ROM_CONTINUE(           0x18000, 0x08000 )            /* banked at 8000-bfff */
  1750.     /* 20000-2ffff empty */
  1751.  
  1752.     ROM_REGION( 0x18000, REGION_CPU2 )                /* Region 2 - sound cpu */
  1753.     ROM_LOAD( "a2-13.rom",  0x00000, 0x08000, 0xe8035ef1 )
  1754.     ROM_CONTINUE(           0x10000, 0x08000 )            /* banked at 8000-9fff */
  1755.  
  1756.     ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1757.     ROM_LOAD( "a2-m01.bin", 0x00000, 0x20000, 0x2ccc86b4 )
  1758.     ROM_LOAD( "a2-m02.bin", 0x20000, 0x20000, 0x056a985f )
  1759.     ROM_LOAD( "a2-m03.bin", 0x40000, 0x20000, 0x274a795f )
  1760.     ROM_LOAD( "a2-m04.bin", 0x60000, 0x20000, 0x9754f703 )
  1761.  
  1762.     ROM_REGION( 0x0400, REGION_PROMS )
  1763.     ROM_LOAD( "b08-08.bin", 0x00000, 0x200, 0xa4f7ebd9 )    /* hi bytes */
  1764.     ROM_LOAD( "b08-07.bin", 0x00200, 0x200, 0xea34d9f7 )    /* lo bytes */
  1765. ROM_END
  1766.  
  1767. ROM_START( ark2us )
  1768.     ROM_REGION( 0x30000, REGION_CPU1 )                /* Region 0 - main cpu */
  1769.     ROM_LOAD( "b08-11.bin", 0x00000, 0x08000, 0x99555231 )
  1770.     ROM_CONTINUE(           0x18000, 0x08000 )            /* banked at 8000-bfff */
  1771.     /* 20000-2ffff empty */
  1772.  
  1773.     ROM_REGION( 0x18000, REGION_CPU2 )                /* Region 2 - sound cpu */
  1774.     ROM_LOAD( "b08-12.bin", 0x00000, 0x08000, 0xdc84e27d )
  1775.     ROM_CONTINUE(           0x10000, 0x08000 )            /* banked at 8000-9fff */
  1776.  
  1777.     ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1778.     ROM_LOAD( "a2-m01.bin", 0x00000, 0x20000, 0x2ccc86b4 )
  1779.     ROM_LOAD( "a2-m02.bin", 0x20000, 0x20000, 0x056a985f )
  1780.     ROM_LOAD( "a2-m03.bin", 0x40000, 0x20000, 0x274a795f )
  1781.     ROM_LOAD( "a2-m04.bin", 0x60000, 0x20000, 0x9754f703 )
  1782.  
  1783.     ROM_REGION( 0x0400, REGION_PROMS )
  1784.     ROM_LOAD( "b08-08.bin", 0x00000, 0x200, 0xa4f7ebd9 )    /* hi bytes */
  1785.     ROM_LOAD( "b08-07.bin", 0x00200, 0x200, 0xea34d9f7 )    /* lo bytes */
  1786. ROM_END
  1787.  
  1788. ROM_START( ark2jp )
  1789.     ROM_REGION( 0x30000, REGION_CPU1 )                /* Region 0 - main cpu */
  1790.     ROM_LOAD( "a2-05.rom",  0x00000, 0x08000, 0x136edf9d )
  1791.     ROM_CONTINUE(           0x18000, 0x08000 )            /* banked at 8000-bfff */
  1792.     /* 20000-2ffff empty */
  1793.  
  1794.     ROM_REGION( 0x18000, REGION_CPU2 )                /* Region 2 - sound cpu */
  1795.     ROM_LOAD( "b08-06",     0x00000, 0x08000, 0xadfcd40c )
  1796.     ROM_CONTINUE(           0x10000, 0x08000 )            /* banked at 8000-9fff */
  1797.  
  1798.     ROM_REGION( 0x80000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1799.     ROM_LOAD( "a2-m01.bin", 0x00000, 0x20000, 0x2ccc86b4 )
  1800.     ROM_LOAD( "a2-m02.bin", 0x20000, 0x20000, 0x056a985f )
  1801.     ROM_LOAD( "a2-m03.bin", 0x40000, 0x20000, 0x274a795f )
  1802.     ROM_LOAD( "a2-m04.bin", 0x60000, 0x20000, 0x9754f703 )
  1803.  
  1804.     ROM_REGION( 0x0400, REGION_PROMS )
  1805.     ROM_LOAD( "b08-08.bin", 0x00000, 0x200, 0xa4f7ebd9 )    /* hi bytes */
  1806.     ROM_LOAD( "b08-07.bin", 0x00200, 0x200, 0xea34d9f7 )    /* lo bytes */
  1807. ROM_END
  1808.  
  1809. ROM_START( plumppop )
  1810.     ROM_REGION( 0x30000, REGION_CPU1 )    /* 64k + bankswitch areas for the first CPU */
  1811.     ROM_LOAD( "a98-09.bin", 0x00000, 0x08000, 0x107f9e06 )
  1812.     ROM_CONTINUE(           0x18000, 0x08000 )                /* banked at 8000-bfff */
  1813.     ROM_LOAD( "a98-10.bin", 0x20000, 0x10000, 0xdf6e6af2 )    /* banked at 8000-bfff */
  1814.  
  1815.     ROM_REGION( 0x18000, REGION_CPU2 )    /* 64k for the second CPU */
  1816.     ROM_LOAD( "a98-11.bin", 0x00000, 0x08000, 0xbc56775c )
  1817.     ROM_CONTINUE(           0x10000, 0x08000 )        /* banked at 8000-9fff */
  1818.  
  1819.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1820.     ROM_LOAD( "a98-01.bin", 0x00000, 0x10000, 0xf3033dca )
  1821.     ROM_RELOAD(             0x10000, 0x10000 )
  1822.     ROM_LOAD( "a98-02.bin", 0x20000, 0x10000, 0xf2d17b0c )
  1823.     ROM_RELOAD(             0x30000, 0x10000 )
  1824.     ROM_LOAD( "a98-03.bin", 0x40000, 0x10000, 0x1a519b0a )
  1825.     ROM_RELOAD(             0x40000, 0x10000 )
  1826.     ROM_LOAD( "a98-04.bin", 0x60000, 0x10000, 0xb64501a1 )
  1827.     ROM_RELOAD(             0x70000, 0x10000 )
  1828.     ROM_LOAD( "a98-05.bin", 0x80000, 0x10000, 0x45c36963 )
  1829.     ROM_RELOAD(             0x90000, 0x10000 )
  1830.     ROM_LOAD( "a98-06.bin", 0xa0000, 0x10000, 0xe075341b )
  1831.     ROM_RELOAD(             0xb0000, 0x10000 )
  1832.     ROM_LOAD( "a98-07.bin", 0xc0000, 0x10000, 0x8e16cd81 )
  1833.     ROM_RELOAD(             0xd0000, 0x10000 )
  1834.     ROM_LOAD( "a98-08.bin", 0xe0000, 0x10000, 0xbfa7609a )
  1835.     ROM_RELOAD(             0xf0000, 0x10000 )
  1836.  
  1837.     ROM_REGION( 0x0400, REGION_PROMS )        /* color proms */
  1838.     ROM_LOAD( "a98-13.bpr", 0x0000, 0x200, 0x7cde2da5 )    /* hi bytes */
  1839.     ROM_LOAD( "a98-12.bpr", 0x0200, 0x200, 0x90dc9da7 )    /* lo bytes */
  1840. ROM_END
  1841.  
  1842. ROM_START( drtoppel )
  1843.     ROM_REGION( 0x30000, REGION_CPU1 )    /* 64k + bankswitch areas for the first CPU */
  1844.     ROM_LOAD( "b19-09.bin", 0x00000, 0x08000, 0x3e654f82 )
  1845.     ROM_CONTINUE(           0x18000, 0x08000 )                /* banked at 8000-bfff */
  1846.     ROM_LOAD( "b19-10.bin", 0x20000, 0x10000, 0x7e72fd25 )    /* banked at 8000-bfff */
  1847.  
  1848.     ROM_REGION( 0x18000, REGION_CPU2 )    /* 64k for the second CPU */
  1849.     ROM_LOAD( "b19-11.bin", 0x00000, 0x08000, 0x524dc249 )
  1850.     ROM_CONTINUE(           0x10000, 0x08000 )        /* banked at 8000-9fff */
  1851.  
  1852.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1853.     ROM_LOAD( "b19-01.bin", 0x00000, 0x20000, 0xa7e8a0c1 )
  1854.     ROM_LOAD( "b19-02.bin", 0x20000, 0x20000, 0x790ae654 )
  1855.     ROM_LOAD( "b19-03.bin", 0x40000, 0x20000, 0x495c4c5a )
  1856.     ROM_LOAD( "b19-04.bin", 0x60000, 0x20000, 0x647007a0 )
  1857.     ROM_LOAD( "b19-05.bin", 0x80000, 0x20000, 0x49f2b1a5 )
  1858.     ROM_LOAD( "b19-06.bin", 0xa0000, 0x20000, 0x2d39f1d0 )
  1859.     ROM_LOAD( "b19-07.bin", 0xc0000, 0x20000, 0x8bb06f41 )
  1860.     ROM_LOAD( "b19-08.bin", 0xe0000, 0x20000, 0x3584b491 )
  1861.  
  1862.     ROM_REGION( 0x0400, REGION_PROMS )        /* color proms */
  1863.     ROM_LOAD( "b19-13.bin", 0x0000, 0x200, 0x6a547980 )    /* hi bytes */
  1864.     ROM_LOAD( "b19-12.bin", 0x0200, 0x200, 0x5754e9d8 )    /* lo bytes */
  1865. ROM_END
  1866.  
  1867. ROM_START( chukatai )
  1868.     ROM_REGION( 0x30000, REGION_CPU1 )    /* 64k + bankswitch areas for the first CPU */
  1869.     ROM_LOAD( "b44.10", 0x00000, 0x08000, 0x8c69e008 )
  1870.     ROM_CONTINUE(       0x18000, 0x08000 )                /* banked at 8000-bfff */
  1871.     ROM_LOAD( "b44.11", 0x20000, 0x10000, 0x32484094 )  /* banked at 8000-bfff */
  1872.  
  1873.     ROM_REGION( 0x18000, REGION_CPU2 )    /* 64k for the second CPU */
  1874.     ROM_LOAD( "b44.12", 0x00000, 0x08000, 0x0600ace6 )
  1875.     ROM_CONTINUE(       0x10000, 0x08000 )    /* banked at 8000-9fff */
  1876.  
  1877.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1878.     ROM_LOAD( "b44-01.a13", 0x00000, 0x20000, 0xaae7b3d5 )
  1879.     ROM_LOAD( "b44-02.a12", 0x20000, 0x20000, 0x7f0b9568 )
  1880.     ROM_LOAD( "b44-03.a10", 0x40000, 0x20000, 0x5a54a3b9 )
  1881.     ROM_LOAD( "b44-04.a08", 0x60000, 0x20000, 0x3c5f544b )
  1882.     ROM_LOAD( "b44-05.a07", 0x80000, 0x20000, 0xd1b7e314 )
  1883.     ROM_LOAD( "b44-06.a05", 0xa0000, 0x20000, 0x269978a8 )
  1884.     ROM_LOAD( "b44-07.a04", 0xc0000, 0x20000, 0x3e0e737e )
  1885.     ROM_LOAD( "b44-08.a02", 0xe0000, 0x20000, 0x6cb1e8fc )
  1886. ROM_END
  1887.  
  1888. ROM_START( tnzs )
  1889.     ROM_REGION( 0x30000, REGION_CPU1 )    /* 64k + bankswitch areas for the first CPU */
  1890.     ROM_LOAD( "nzsb5310.bin", 0x00000, 0x08000, 0xa73745c6 )
  1891.     ROM_CONTINUE(             0x18000, 0x18000 )        /* banked at 8000-bfff */
  1892.  
  1893.     ROM_REGION( 0x18000, REGION_CPU2 )    /* 64k for the second CPU */
  1894.     ROM_LOAD( "nzsb5311.bin", 0x00000, 0x08000, 0x9784d443 )
  1895.     ROM_CONTINUE(             0x10000, 0x08000 )        /* banked at 8000-9fff */
  1896.  
  1897.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1898.     /* ROMs taken from another set (the ones from this set were read incorrectly) */
  1899.     ROM_LOAD( "nzsb5316.bin", 0x00000, 0x20000, 0xc3519c2a )
  1900.     ROM_LOAD( "nzsb5317.bin", 0x20000, 0x20000, 0x2bf199e8 )
  1901.     ROM_LOAD( "nzsb5318.bin", 0x40000, 0x20000, 0x92f35ed9 )
  1902.     ROM_LOAD( "nzsb5319.bin", 0x60000, 0x20000, 0xedbb9581 )
  1903.     ROM_LOAD( "nzsb5322.bin", 0x80000, 0x20000, 0x59d2aef6 )
  1904.     ROM_LOAD( "nzsb5323.bin", 0xa0000, 0x20000, 0x74acfb9b )
  1905.     ROM_LOAD( "nzsb5320.bin", 0xc0000, 0x20000, 0x095d0dc0 )
  1906.     ROM_LOAD( "nzsb5321.bin", 0xe0000, 0x20000, 0x9800c54d )
  1907. ROM_END
  1908.  
  1909. ROM_START( tnzsb )
  1910.     ROM_REGION( 0x30000, REGION_CPU1 )    /* 64k + bankswitch areas for the first CPU */
  1911.     ROM_LOAD( "nzsb5324.bin", 0x00000, 0x08000, 0xd66824c6 )
  1912.     ROM_CONTINUE(             0x18000, 0x18000 )        /* banked at 8000-bfff */
  1913.  
  1914.     ROM_REGION( 0x18000, REGION_CPU2 )    /* 64k for the second CPU */
  1915.     ROM_LOAD( "nzsb5325.bin", 0x00000, 0x08000, 0xd6ac4e71 )
  1916.     ROM_CONTINUE(             0x10000, 0x08000 )        /* banked at 8000-9fff */
  1917.  
  1918.     ROM_REGION( 0x10000, REGION_CPU3 )    /* 64k for the third CPU */
  1919.     ROM_LOAD( "nzsb5326.bin", 0x00000, 0x10000, 0xcfd5649c )
  1920.  
  1921.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1922.     /* ROMs taken from another set (the ones from this set were read incorrectly) */
  1923.     ROM_LOAD( "nzsb5316.bin", 0x00000, 0x20000, 0xc3519c2a )
  1924.     ROM_LOAD( "nzsb5317.bin", 0x20000, 0x20000, 0x2bf199e8 )
  1925.     ROM_LOAD( "nzsb5318.bin", 0x40000, 0x20000, 0x92f35ed9 )
  1926.     ROM_LOAD( "nzsb5319.bin", 0x60000, 0x20000, 0xedbb9581 )
  1927.     ROM_LOAD( "nzsb5322.bin", 0x80000, 0x20000, 0x59d2aef6 )
  1928.     ROM_LOAD( "nzsb5323.bin", 0xa0000, 0x20000, 0x74acfb9b )
  1929.     ROM_LOAD( "nzsb5320.bin", 0xc0000, 0x20000, 0x095d0dc0 )
  1930.     ROM_LOAD( "nzsb5321.bin", 0xe0000, 0x20000, 0x9800c54d )
  1931. ROM_END
  1932.  
  1933. ROM_START( tnzs2 )
  1934.     ROM_REGION( 0x30000, REGION_CPU1 )    /* 64k + bankswitch areas for the first CPU */
  1935.     ROM_LOAD( "ns_c-11.rom",  0x00000, 0x08000, 0x3c1dae7b )
  1936.     ROM_CONTINUE(             0x18000, 0x18000 )        /* banked at 8000-bfff */
  1937.  
  1938.     ROM_REGION( 0x18000, REGION_CPU2 )    /* 64k for the second CPU */
  1939.     ROM_LOAD( "ns_e-3.rom",   0x00000, 0x08000, 0xc7662e96 )
  1940.     ROM_CONTINUE(             0x10000, 0x08000 )
  1941.  
  1942.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1943.     ROM_LOAD( "ns_a13.rom",   0x00000, 0x20000, 0x7e0bd5bb )
  1944.     ROM_LOAD( "ns_a12.rom",   0x20000, 0x20000, 0x95880726 )
  1945.     ROM_LOAD( "ns_a10.rom",   0x40000, 0x20000, 0x2bc4c053 )
  1946.     ROM_LOAD( "ns_a08.rom",   0x60000, 0x20000, 0x8ff8d88c )
  1947.     ROM_LOAD( "ns_a07.rom",   0x80000, 0x20000, 0x291bcaca )
  1948.     ROM_LOAD( "ns_a05.rom",   0xa0000, 0x20000, 0x6e762e20 )
  1949.     ROM_LOAD( "ns_a04.rom",   0xc0000, 0x20000, 0xe1fd1b9d )
  1950.     ROM_LOAD( "ns_a02.rom",   0xe0000, 0x20000, 0x2ab06bda )
  1951. ROM_END
  1952.  
  1953. ROM_START( insectx )
  1954.     ROM_REGION( 0x30000, REGION_CPU1 )    /* 64k + bankswitch areas for the first CPU */
  1955.     ROM_LOAD( "insector.u32", 0x00000, 0x08000, 0x18eef387 )
  1956.     ROM_CONTINUE(             0x18000, 0x18000 )        /* banked at 8000-bfff */
  1957.  
  1958.     ROM_REGION( 0x18000, REGION_CPU2 )    /* 64k for the second CPU */
  1959.     ROM_LOAD( "insector.u38", 0x00000, 0x08000, 0x324b28c9 )
  1960.     ROM_CONTINUE(             0x10000, 0x08000 )        /* banked at 8000-9fff */
  1961.  
  1962.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1963.     ROM_LOAD( "insector.r15", 0x00000, 0x80000, 0xd00294b1 )
  1964.     ROM_LOAD( "insector.r16", 0x80000, 0x80000, 0xdb5a7434 )
  1965. ROM_END
  1966.  
  1967. ROM_START( kageki )
  1968.     ROM_REGION( 0x30000, REGION_CPU1 )
  1969.     ROM_LOAD( "b35-16.11c",  0x00000, 0x08000, 0xa4e6fd58 )    /* US ver */
  1970.     ROM_CONTINUE(            0x18000, 0x08000 )
  1971.     ROM_LOAD( "b35-10.9c",   0x20000, 0x10000, 0xb150457d )
  1972.  
  1973.     ROM_REGION( 0x18000, REGION_CPU2 )
  1974.     ROM_LOAD( "b35-17.43e",  0x00000, 0x08000, 0xfdd9c246 )    /* US ver */
  1975.     ROM_CONTINUE(            0x10000, 0x08000 )
  1976.  
  1977.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  1978.     ROM_LOAD( "b35-01.13a",  0x00000, 0x20000, 0x01d83a69 )
  1979.     ROM_LOAD( "b35-02.12a",  0x20000, 0x20000, 0xd8af47ac )
  1980.     ROM_LOAD( "b35-03.10a",  0x40000, 0x20000, 0x3cb68797 )
  1981.     ROM_LOAD( "b35-04.8a",   0x60000, 0x20000, 0x71c03f91 )
  1982.     ROM_LOAD( "b35-05.7a",   0x80000, 0x20000, 0xa4e20c08 )
  1983.     ROM_LOAD( "b35-06.5a",   0xa0000, 0x20000, 0x3f8ab658 )
  1984.     ROM_LOAD( "b35-07.4a",   0xc0000, 0x20000, 0x1b4af049 )
  1985.     ROM_LOAD( "b35-08.2a",   0xe0000, 0x20000, 0xdeb2268c )
  1986.  
  1987.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* samples */
  1988.     ROM_LOAD( "b35-15.98g",  0x00000, 0x10000, 0xe6212a0f )    /* US ver */
  1989. ROM_END
  1990.  
  1991. ROM_START( kagekij )
  1992.     ROM_REGION( 0x30000, REGION_CPU1 )
  1993.     ROM_LOAD( "b35-09j.11c", 0x00000, 0x08000, 0x829637d5 )    /* JP ver */
  1994.     ROM_CONTINUE(            0x18000, 0x08000 )
  1995.     ROM_LOAD( "b35-10.9c",   0x20000, 0x10000, 0xb150457d )
  1996.  
  1997.     ROM_REGION( 0x18000, REGION_CPU2 )
  1998.     ROM_LOAD( "b35-11j.43e", 0x00000, 0x08000, 0x64d093fc )    /* JP ver */
  1999.     ROM_CONTINUE(            0x10000, 0x08000 )
  2000.  
  2001.     ROM_REGION( 0x100000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  2002.     ROM_LOAD( "b35-01.13a",  0x00000, 0x20000, 0x01d83a69 )
  2003.     ROM_LOAD( "b35-02.12a",  0x20000, 0x20000, 0xd8af47ac )
  2004.     ROM_LOAD( "b35-03.10a",  0x40000, 0x20000, 0x3cb68797 )
  2005.     ROM_LOAD( "b35-04.8a",   0x60000, 0x20000, 0x71c03f91 )
  2006.     ROM_LOAD( "b35-05.7a",   0x80000, 0x20000, 0xa4e20c08 )
  2007.     ROM_LOAD( "b35-06.5a",   0xa0000, 0x20000, 0x3f8ab658 )
  2008.     ROM_LOAD( "b35-07.4a",   0xc0000, 0x20000, 0x1b4af049 )
  2009.     ROM_LOAD( "b35-08.2a",   0xe0000, 0x20000, 0xdeb2268c )
  2010.  
  2011.     ROM_REGION( 0x10000, REGION_SOUND1 )    /* samples */
  2012.     ROM_LOAD( "b35-12j.98g", 0x00000, 0x10000, 0x184409f1 )    /* JP ver */
  2013. ROM_END
  2014.  
  2015.  
  2016.  
  2017. GAME( 1987, extrmatn, 0,        arkanoi2, extrmatn, extrmatn, ROT270, "[Taito] World Games", "Extermination (US)" )
  2018. GAME( 1987, arkanoi2, 0,        arkanoi2, arkanoi2, arkanoi2, ROT270, "Taito Corporation Japan", "Arkanoid - Revenge of DOH (World)" )
  2019. GAME( 1987, ark2us,   arkanoi2, arkanoi2, ark2us,   arkanoi2, ROT270, "Taito America Corporation (Romstar license)", "Arkanoid - Revenge of DOH (US)" )
  2020. GAME( 1987, ark2jp,   arkanoi2, arkanoi2, ark2us,   arkanoi2, ROT270, "Taito Corporation", "Arkanoid - Revenge of DOH (Japan)" )
  2021. GAME( 1987, plumppop, 0,        drtoppel, plumppop, drtoppel, ROT0,   "Taito Corporation", "Plump Pop (Japan)" )
  2022. GAME( 1987, drtoppel, 0,        drtoppel, drtoppel, drtoppel, ROT90,  "Taito Corporation", "Dr. Toppel's Tankentai (Japan)" )
  2023. GAME( 1988, chukatai, 0,        tnzs,     chukatai, chukatai, ROT0,   "Taito Corporation", "Chuka Taisen (Japan)" )
  2024. GAME( 1988, tnzs,     0,        tnzs,     tnzs,     tnzs,     ROT0,   "Taito Corporation", "The NewZealand Story (Japan)" )
  2025. GAME( 1988, tnzsb,    tnzs,     tnzsb,    tnzsb,    tnzs,     ROT0,   "bootleg", "The NewZealand Story (World, bootleg)" )
  2026. GAME( 1988, tnzs2,    tnzs,     tnzs,     tnzs2,    tnzs,     ROT0,   "Taito Corporation Japan", "The NewZealand Story 2 (World)" )
  2027. GAME( 1989, insectx,  0,        insectx,  insectx,  insectx,  ROT0,   "Taito Corporation Japan", "Insector X (World)" )
  2028. GAME( 1988, kageki,   0,        kageki,   kageki,   kageki,   ROT90,  "Taito America Corporation (Romstar license)", "Kageki (US)" )
  2029. GAME( 1988, kagekij,  kageki,   kageki,   kageki,   kageki,   ROT90,  "Taito Corporation", "Kageki (Japan)" )
  2030.